<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>find_bar_code [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_identification.html">Identification</a> / <a href="toc_identification_barcode.html">Bar Code</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">find_bar_code</span><span data-if="c" style="display:none;">T_find_bar_code</span><span data-if="cpp" style="display:none;">FindBarCode</span><span data-if="dotnet" style="display:none;">FindBarCode</span><span data-if="python" style="display:none;">find_bar_code</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">find_bar_code</span><span data-if="c" style="display:none;">T_find_bar_code</span><span data-if="cpp" style="display:none;">FindBarCode</span><span data-if="dotnet" style="display:none;">FindBarCode</span><span data-if="python" style="display:none;">find_bar_code</span></code> — Detect and read bar code symbols in an image.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>find_bar_code</b>(<a href="#Image"><i>Image</i></a> : <a href="#SymbolRegions"><i>SymbolRegions</i></a> : <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, <a href="#CodeType"><i>CodeType</i></a> : <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_find_bar_code</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#SymbolRegions"><i>SymbolRegions</i></a>, const Htuple <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, const Htuple <a href="#CodeType"><i>CodeType</i></a>, Htuple* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FindBarCode</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, HObject* <a href="#SymbolRegions"><i>SymbolRegions</i></a>, const HTuple&amp; <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, const HTuple&amp; <a href="#CodeType"><i>CodeType</i></a>, HTuple* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HBarCode.html">HBarCode</a>::<b>FindBarCode</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, const HTuple&amp; <a href="#CodeType"><i>CodeType</i></a>, HTuple* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HBarCode.html">HBarCode</a>::<b>FindBarCode</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, const HString&amp; <a href="#CodeType"><i>CodeType</i></a>, HString* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HBarCode.html">HBarCode</a>::<b>FindBarCode</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, const char* <a href="#CodeType"><i>CodeType</i></a>, HString* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HBarCode.html">HBarCode</a>::<b>FindBarCode</b>(const HImage&amp; <a href="#Image"><i>Image</i></a>, const wchar_t* <a href="#CodeType"><i>CodeType</i></a>, HString* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindBarCode</b>(const HBarCode&amp; <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, const HTuple&amp; <a href="#CodeType"><i>CodeType</i></a>, HTuple* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindBarCode</b>(const HBarCode&amp; <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, const HString&amp; <a href="#CodeType"><i>CodeType</i></a>, HString* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindBarCode</b>(const HBarCode&amp; <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, const char* <a href="#CodeType"><i>CodeType</i></a>, HString* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>::<b>FindBarCode</b>(const HBarCode&amp; <a href="#BarCodeHandle"><i>BarCodeHandle</i></a>, const wchar_t* <a href="#CodeType"><i>CodeType</i></a>, HString* <a href="#DecodedDataStrings"><i>DecodedDataStrings</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FindBarCode</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, out <a href="HObject.html">HObject</a> <a href="#SymbolRegions"><i>symbolRegions</i></a>, <a href="HTuple.html">HTuple</a> <a href="#BarCodeHandle"><i>barCodeHandle</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CodeType"><i>codeType</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#DecodedDataStrings"><i>decodedDataStrings</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HBarCode.html">HBarCode</a>.<b>FindBarCode</b>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CodeType"><i>codeType</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#DecodedDataStrings"><i>decodedDataStrings</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HBarCode.html">HBarCode</a>.<b>FindBarCode</b>(<a href="HImage.html">HImage</a> <a href="#Image"><i>image</i></a>, string <a href="#CodeType"><i>codeType</i></a>, out string <a href="#DecodedDataStrings"><i>decodedDataStrings</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>.<b>FindBarCode</b>(<a href="HBarCode.html">HBarCode</a> <a href="#BarCodeHandle"><i>barCodeHandle</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CodeType"><i>codeType</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#DecodedDataStrings"><i>decodedDataStrings</i></a>)</code></p>
<p>
<code><a href="HRegion.html">HRegion</a> <a href="HImage.html">HImage</a>.<b>FindBarCode</b>(<a href="HBarCode.html">HBarCode</a> <a href="#BarCodeHandle"><i>barCodeHandle</i></a>, string <a href="#CodeType"><i>codeType</i></a>, out string <a href="#DecodedDataStrings"><i>decodedDataStrings</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>find_bar_code</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#BarCodeHandle"><i>bar_code_handle</i></a>: HHandle, <a href="#CodeType"><i>code_type</i></a>: MaybeSequence[str]) -&gt; Tuple[HObject, Sequence[str]]</code></p>
<p>
<code>def <b>find_bar_code_s</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#BarCodeHandle"><i>bar_code_handle</i></a>: HHandle, <a href="#CodeType"><i>code_type</i></a>: MaybeSequence[str]) -&gt; Tuple[HObject, str]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> finds and reads bar code symbols in a
given image (<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a>) and returns the decoded data. In one image
an arbitrary number of bar codes of a single type can be read. The type
of the desired bar code symbology is given by <a href="#CodeType"><i><code><span data-if="hdevelop" style="display:inline">CodeType</span><span data-if="c" style="display:none">CodeType</span><span data-if="cpp" style="display:none">CodeType</span><span data-if="com" style="display:none">CodeType</span><span data-if="dotnet" style="display:none">codeType</span><span data-if="python" style="display:none">code_type</span></code></i></a>. The
decoded strings are returned in <a href="#DecodedDataStrings"><i><code><span data-if="hdevelop" style="display:inline">DecodedDataStrings</span><span data-if="c" style="display:none">DecodedDataStrings</span><span data-if="cpp" style="display:none">DecodedDataStrings</span><span data-if="com" style="display:none">DecodedDataStrings</span><span data-if="dotnet" style="display:none">decodedDataStrings</span><span data-if="python" style="display:none">decoded_data_strings</span></code></i></a> and the
corresponding bar code regions in <a href="#SymbolRegions"><i><code><span data-if="hdevelop" style="display:inline">SymbolRegions</span><span data-if="c" style="display:none">SymbolRegions</span><span data-if="cpp" style="display:none">SymbolRegions</span><span data-if="com" style="display:none">SymbolRegions</span><span data-if="dotnet" style="display:none">symbolRegions</span><span data-if="python" style="display:none">symbol_regions</span></code></i></a>. For a total
of n successfully read bar codes, the indices from 0 to (n-1) can be
used as candidate handle in 该算子s <a href="get_bar_code_object.html"><code><span data-if="hdevelop" style="display:inline">get_bar_code_object</span><span data-if="c" style="display:none">get_bar_code_object</span><span data-if="cpp" style="display:none">GetBarCodeObject</span><span data-if="com" style="display:none">GetBarCodeObject</span><span data-if="dotnet" style="display:none">GetBarCodeObject</span><span data-if="python" style="display:none">get_bar_code_object</span></code></a>
and <a href="get_bar_code_result.html"><code><span data-if="hdevelop" style="display:inline">get_bar_code_result</span><span data-if="c" style="display:none">get_bar_code_result</span><span data-if="cpp" style="display:none">GetBarCodeResult</span><span data-if="com" style="display:none">GetBarCodeResult</span><span data-if="dotnet" style="display:none">GetBarCodeResult</span><span data-if="python" style="display:none">get_bar_code_result</span></code></a> in order to retrieve the desired data of
one specific bar code result.
</p>
<p>Bar codes are expected to appear dark on a light background.
To read light bar codes on a dark background, invert the input image
using 该算子 <a href="invert_image.html"><code><span data-if="hdevelop" style="display:inline">invert_image</span><span data-if="c" style="display:none">invert_image</span><span data-if="cpp" style="display:none">InvertImage</span><span data-if="com" style="display:none">InvertImage</span><span data-if="dotnet" style="display:none">InvertImage</span><span data-if="python" style="display:none">invert_image</span></code></a> beforehand.
</p>
<p>Before calling <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> a bar code model must be created
by calling <a href="create_bar_code_model.html"><code><span data-if="hdevelop" style="display:inline">create_bar_code_model</span><span data-if="c" style="display:none">create_bar_code_model</span><span data-if="cpp" style="display:none">CreateBarCodeModel</span><span data-if="com" style="display:none">CreateBarCodeModel</span><span data-if="dotnet" style="display:none">CreateBarCodeModel</span><span data-if="python" style="display:none">create_bar_code_model</span></code></a>. This operator returns a bar code
model <a href="#BarCodeHandle"><i><code><span data-if="hdevelop" style="display:inline">BarCodeHandle</span><span data-if="c" style="display:none">BarCodeHandle</span><span data-if="cpp" style="display:none">BarCodeHandle</span><span data-if="com" style="display:none">BarCodeHandle</span><span data-if="dotnet" style="display:none">barCodeHandle</span><span data-if="python" style="display:none">bar_code_handle</span></code></i></a>, which is input to <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code>.
</p>
<p>The output value <a href="#DecodedDataStrings"><i><code><span data-if="hdevelop" style="display:inline">DecodedDataStrings</span><span data-if="c" style="display:none">DecodedDataStrings</span><span data-if="cpp" style="display:none">DecodedDataStrings</span><span data-if="com" style="display:none">DecodedDataStrings</span><span data-if="dotnet" style="display:none">decodedDataStrings</span><span data-if="python" style="display:none">decoded_data_strings</span></code></i></a> contains the decoded string of
the symbol for each bar code result. The contents of the strings are conform
to the appropriate standard of the symbology. Typically,
<a href="#DecodedDataStrings"><i><code><span data-if="hdevelop" style="display:inline">DecodedDataStrings</span><span data-if="c" style="display:none">DecodedDataStrings</span><span data-if="cpp" style="display:none">DecodedDataStrings</span><span data-if="com" style="display:none">DecodedDataStrings</span><span data-if="dotnet" style="display:none">decodedDataStrings</span><span data-if="python" style="display:none">decoded_data_strings</span></code></i></a> contains only data characters. For bar codes
with a mandatory check character the check character is not included in
the string. For bar codes with an optional check character, like for
example Code 39, Codabar, 2/5 Industrial or 2/5 Interleaved, the result
depends on the value of the <i><span data-if="hdevelop" style="display:inline">'check_char'</span><span data-if="c" style="display:none">"check_char"</span><span data-if="cpp" style="display:none">"check_char"</span><span data-if="com" style="display:none">"check_char"</span><span data-if="dotnet" style="display:none">"check_char"</span><span data-if="python" style="display:none">"check_char"</span></i> parameter, which can
be set in <a href="create_bar_code_model.html"><code><span data-if="hdevelop" style="display:inline">create_bar_code_model</span><span data-if="c" style="display:none">create_bar_code_model</span><span data-if="cpp" style="display:none">CreateBarCodeModel</span><span data-if="com" style="display:none">CreateBarCodeModel</span><span data-if="dotnet" style="display:none">CreateBarCodeModel</span><span data-if="python" style="display:none">create_bar_code_model</span></code></a>, <a href="set_bar_code_param.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></code></a> or
<a href="set_bar_code_param_specific.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param_specific</span><span data-if="c" style="display:none">set_bar_code_param_specific</span><span data-if="cpp" style="display:none">SetBarCodeParamSpecific</span><span data-if="com" style="display:none">SetBarCodeParamSpecific</span><span data-if="dotnet" style="display:none">SetBarCodeParamSpecific</span><span data-if="python" style="display:none">set_bar_code_param_specific</span></code></a>:
The default setting of <i><span data-if="hdevelop" style="display:inline">'absent'</span><span data-if="c" style="display:none">"absent"</span><span data-if="cpp" style="display:none">"absent"</span><span data-if="com" style="display:none">"absent"</span><span data-if="dotnet" style="display:none">"absent"</span><span data-if="python" style="display:none">"absent"</span></i> assumes that no check character
is present. In this case, no check is performed and all characters are
returned as data. When set to <i><span data-if="hdevelop" style="display:inline">'present'</span><span data-if="c" style="display:none">"present"</span><span data-if="cpp" style="display:none">"present"</span><span data-if="com" style="display:none">"present"</span><span data-if="dotnet" style="display:none">"present"</span><span data-if="python" style="display:none">"present"</span></i>, a check character is
expected and used to verify the correctness of the bar code. The bar code is
graded as unreadable if the check sum does not match. Accordingly, the symbol
region and the decoded string do not appear in the list of resulting strings
(<a href="#DecodedDataStrings"><i><code><span data-if="hdevelop" style="display:inline">DecodedDataStrings</span><span data-if="c" style="display:none">DecodedDataStrings</span><span data-if="cpp" style="display:none">DecodedDataStrings</span><span data-if="com" style="display:none">DecodedDataStrings</span><span data-if="dotnet" style="display:none">decodedDataStrings</span><span data-if="python" style="display:none">decoded_data_strings</span></code></i></a>) and in the list of resulting regions
(<a href="#SymbolRegions"><i><code><span data-if="hdevelop" style="display:inline">SymbolRegions</span><span data-if="c" style="display:none">SymbolRegions</span><span data-if="cpp" style="display:none">SymbolRegions</span><span data-if="com" style="display:none">SymbolRegions</span><span data-if="dotnet" style="display:none">symbolRegions</span><span data-if="python" style="display:none">symbol_regions</span></code></i></a>). The check character itself is stripped from the data.
If this stripping is undesired, the mode <i><span data-if="hdevelop" style="display:inline">'preserved'</span><span data-if="c" style="display:none">"preserved"</span><span data-if="cpp" style="display:none">"preserved"</span><span data-if="com" style="display:none">"preserved"</span><span data-if="dotnet" style="display:none">"preserved"</span><span data-if="python" style="display:none">"preserved"</span></i> allows to verify
the bar code while still keeping the check character in the data.</p>
<p>The underlying decoded reference data, including start/stop and check
characters, can be queried by using the <a href="get_bar_code_result.html"><code><span data-if="hdevelop" style="display:inline">get_bar_code_result</span><span data-if="c" style="display:none">get_bar_code_result</span><span data-if="cpp" style="display:none">GetBarCodeResult</span><span data-if="com" style="display:none">GetBarCodeResult</span><span data-if="dotnet" style="display:none">GetBarCodeResult</span><span data-if="python" style="display:none">get_bar_code_result</span></code></a>
operator with the option <i><span data-if="hdevelop" style="display:inline">'decoded_reference'</span><span data-if="c" style="display:none">"decoded_reference"</span><span data-if="cpp" style="display:none">"decoded_reference"</span><span data-if="com" style="display:none">"decoded_reference"</span><span data-if="dotnet" style="display:none">"decoded_reference"</span><span data-if="python" style="display:none">"decoded_reference"</span></i>.
</p>
<p>Following bar code symbologies are supported:
</p>
<div style="text-align:center"><table style="margin-left:auto;margin-right:auto" class="layout">
<col span="1">
<col span="1">
<col span="1">
<tr>
<td style="text-align:left">
2/5 Industrial  </td>
<td style="text-align:left">  EAN-8           </td>
<td style="text-align:left">  GS1-128                             </td>
</tr>
<tr>
<td style="text-align:left">
2/5 Interleaved </td>
<td style="text-align:left">  EAN-8 Add-On 2  </td>
<td style="text-align:left">  GS1 DataBar Omnidirectional         </td>
</tr>
<tr>
<td style="text-align:left">
Codabar         </td>
<td style="text-align:left">  EAN-8 Add-On 5  </td>
<td style="text-align:left">  GS1 DataBar Truncated               </td>
</tr>
<tr>
<td style="text-align:left">
Code 39         </td>
<td style="text-align:left">  EAN-13          </td>
<td style="text-align:left">  GS1 DataBar Stacked                 </td>
</tr>
<tr>
<td style="text-align:left">
Code 32 (converted from Code 39)   </td>
<td style="text-align:left">  EAN-13 Add-On 2 </td>
<td style="text-align:left">
GS1 DataBar Stacked Omnidirectional         </td>
</tr>
<tr>
<td style="text-align:left">
Code 93         </td>
<td style="text-align:left">  EAN-13 Add-On 5 </td>
<td style="text-align:left">  GS1 DataBar Limited                 </td>
</tr>
<tr>
<td style="text-align:left">
Code 128        </td>
<td style="text-align:left">  UPC-A           </td>
<td style="text-align:left">  GS1 DataBar Expanded                </td>
</tr>
<tr>
<td style="text-align:left">
MSI             </td>
<td style="text-align:left">  UPC-A Add-On 2  </td>
<td style="text-align:left">  GS1 DataBar Expanded Stacked        </td>
</tr>
<tr>
<td style="text-align:left">
PharmaCode      </td>
<td style="text-align:left">  UPC-A Add-On 5  </td>
<td style="text-align:left">                                      </td>
</tr>
<tr>
<td style="text-align:left">
</td>
<td style="text-align:left">  UPC-E           </td>
<td style="text-align:left">                                      </td>
</tr>
<tr>
<td style="text-align:left">
</td>
<td style="text-align:left">  UPC-E Add-On 2  </td>
<td style="text-align:left">                                      </td>
</tr>
<tr>
<td style="text-align:left">
</td>
<td style="text-align:left">  UPC-E Add-On 5  </td>
<td style="text-align:left">
</td>
</tr>
</table></div>
<p>Note that the PharmaCode can be read in forward and backward direction,
both yielding a valid result. Therefore, both strings are returned and
concatenated into a single string in <a href="#DecodedDataStrings"><i><code><span data-if="hdevelop" style="display:inline">DecodedDataStrings</span><span data-if="c" style="display:none">DecodedDataStrings</span><span data-if="cpp" style="display:none">DecodedDataStrings</span><span data-if="com" style="display:none">DecodedDataStrings</span><span data-if="dotnet" style="display:none">decodedDataStrings</span><span data-if="python" style="display:none">decoded_data_strings</span></code></i></a> by a
separating comma.
</p>
<p>Note that the GS1 DataBar bar codes may contain an additional composite
code component.
To find and decode this component, set the parameter
<i><span data-if="hdevelop" style="display:inline">'composite_code'</span><span data-if="c" style="display:none">"composite_code"</span><span data-if="cpp" style="display:none">"composite_code"</span><span data-if="com" style="display:none">"composite_code"</span><span data-if="dotnet" style="display:none">"composite_code"</span><span data-if="python" style="display:none">"composite_code"</span></i> to <i><span data-if="hdevelop" style="display:inline">'CC-A/B'</span><span data-if="c" style="display:none">"CC-A/B"</span><span data-if="cpp" style="display:none">"CC-A/B"</span><span data-if="com" style="display:none">"CC-A/B"</span><span data-if="dotnet" style="display:none">"CC-A/B"</span><span data-if="python" style="display:none">"CC-A/B"</span></i> using 该算子
<a href="set_bar_code_param.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></code></a>.
</p>
<p>Note that also a bar code of type 'Code 32' can be read by using
<code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> with <a href="#CodeType"><i><code><span data-if="hdevelop" style="display:inline">CodeType</span><span data-if="c" style="display:none">CodeType</span><span data-if="cpp" style="display:none">CodeType</span><span data-if="com" style="display:none">CodeType</span><span data-if="dotnet" style="display:none">codeType</span><span data-if="python" style="display:none">code_type</span></code></i></a> set to <i><span data-if="hdevelop" style="display:inline">'Code 39'</span><span data-if="c" style="display:none">"Code 39"</span><span data-if="cpp" style="display:none">"Code 39"</span><span data-if="com" style="display:none">"Code 39"</span><span data-if="dotnet" style="display:none">"Code 39"</span><span data-if="python" style="display:none">"Code 39"</span></i>
in combination with the external procedure
<code>convert_decoded_string_code39_to_code32</code>.
</p>
<p>The list of available GS1 Application Identifiers can be updated using
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system</span><span data-if="c" style="display:none">set_system</span><span data-if="cpp" style="display:none">SetSystem</span><span data-if="com" style="display:none">SetSystem</span><span data-if="dotnet" style="display:none">SetSystem</span><span data-if="python" style="display:none">set_system</span></code></a> (see the parameter <i><span data-if="hdevelop" style="display:inline">'gs1_syntax_dictionary'</span><span data-if="c" style="display:none">"gs1_syntax_dictionary"</span><span data-if="cpp" style="display:none">"gs1_syntax_dictionary"</span><span data-if="com" style="display:none">"gs1_syntax_dictionary"</span><span data-if="dotnet" style="display:none">"gs1_syntax_dictionary"</span><span data-if="python" style="display:none">"gs1_syntax_dictionary"</span></i>).
</p>
<p><b>Autodiscrimination</b>
</p>
<p>Autodiscrimination describes the simultaneous decoding of multiple bar code
types in one call of <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code>. For this purpose a tuple of
bar code types is specified for the parameter <a href="#CodeType"><i><code><span data-if="hdevelop" style="display:inline">CodeType</span><span data-if="c" style="display:none">CodeType</span><span data-if="cpp" style="display:none">CodeType</span><span data-if="com" style="display:none">CodeType</span><span data-if="dotnet" style="display:none">codeType</span><span data-if="python" style="display:none">code_type</span></code></i></a>. Using the
generic value <i><span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></i> all known bar code types are decoded - except
<i><span data-if="hdevelop" style="display:inline">'PharmaCode'</span><span data-if="c" style="display:none">"PharmaCode"</span><span data-if="cpp" style="display:none">"PharmaCode"</span><span data-if="com" style="display:none">"PharmaCode"</span><span data-if="dotnet" style="display:none">"PharmaCode"</span><span data-if="python" style="display:none">"PharmaCode"</span></i> and <i><span data-if="hdevelop" style="display:inline">'MSI'</span><span data-if="c" style="display:none">"MSI"</span><span data-if="cpp" style="display:none">"MSI"</span><span data-if="com" style="display:none">"MSI"</span><span data-if="dotnet" style="display:none">"MSI"</span><span data-if="python" style="display:none">"MSI"</span></i> because these codes don't have enough
features to be reliably
separated from other bar code types. The tuple can also contain bar code
types with the tilde prefix (~)
which won't be decoded. For example
<span class="pre">
  <i><span data-if="hdevelop" style="display:inline">['auto', '~EAN-8', '~EAN-8 Add-On 2', '~EAN-8 Add-On 5']</span><span data-if="c" style="display:none">["auto", "~EAN-8", "~EAN-8 Add-On 2", "~EAN-8 Add-On 5"]</span><span data-if="cpp" style="display:none">["auto", "~EAN-8", "~EAN-8 Add-On 2", "~EAN-8 Add-On 5"]</span><span data-if="com" style="display:none">["auto", "~EAN-8", "~EAN-8 Add-On 2", "~EAN-8 Add-On 5"]</span><span data-if="dotnet" style="display:none">["auto", "~EAN-8", "~EAN-8 Add-On 2", "~EAN-8 Add-On 5"]</span><span data-if="python" style="display:none">["auto", "~EAN-8", "~EAN-8 Add-On 2", "~EAN-8 Add-On 5"]</span></i>
</span>
describes all bar code types without <i><span data-if="hdevelop" style="display:inline">'PharmaCode'</span><span data-if="c" style="display:none">"PharmaCode"</span><span data-if="cpp" style="display:none">"PharmaCode"</span><span data-if="com" style="display:none">"PharmaCode"</span><span data-if="dotnet" style="display:none">"PharmaCode"</span><span data-if="python" style="display:none">"PharmaCode"</span></i>, <i><span data-if="hdevelop" style="display:inline">'MSI'</span><span data-if="c" style="display:none">"MSI"</span><span data-if="cpp" style="display:none">"MSI"</span><span data-if="com" style="display:none">"MSI"</span><span data-if="dotnet" style="display:none">"MSI"</span><span data-if="python" style="display:none">"MSI"</span></i> and
all kinds of <i><span data-if="hdevelop" style="display:inline">'EAN-8'</span><span data-if="c" style="display:none">"EAN-8"</span><span data-if="cpp" style="display:none">"EAN-8"</span><span data-if="com" style="display:none">"EAN-8"</span><span data-if="dotnet" style="display:none">"EAN-8"</span><span data-if="python" style="display:none">"EAN-8"</span></i>.
Please note that each additionally allowed bar code type increases the
run-time of the
operator. Using too many bar code types the reliability of the decoding
could decrease because not all bar code types can be discriminated
reliably. To improve autodiscrimination compatibility bar codes
with a check character or check sum should be used.
</p>
<p>The bar code reader tries to decode the bar code types in the following
order:
</p>
<p><i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Omnidir'</span><span data-if="c" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="cpp" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="com" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="python" style="display:none">"GS1 DataBar Omnidir"</span></i>, <i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Truncated'</span><span data-if="c" style="display:none">"GS1 DataBar Truncated"</span><span data-if="cpp" style="display:none">"GS1 DataBar Truncated"</span><span data-if="com" style="display:none">"GS1 DataBar Truncated"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Truncated"</span><span data-if="python" style="display:none">"GS1 DataBar Truncated"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Stacked'</span><span data-if="c" style="display:none">"GS1 DataBar Stacked"</span><span data-if="cpp" style="display:none">"GS1 DataBar Stacked"</span><span data-if="com" style="display:none">"GS1 DataBar Stacked"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Stacked"</span><span data-if="python" style="display:none">"GS1 DataBar Stacked"</span></i>, <i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Stacked Omnidir'</span><span data-if="c" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="cpp" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="com" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="python" style="display:none">"GS1 DataBar Stacked Omnidir"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Limited'</span><span data-if="c" style="display:none">"GS1 DataBar Limited"</span><span data-if="cpp" style="display:none">"GS1 DataBar Limited"</span><span data-if="com" style="display:none">"GS1 DataBar Limited"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Limited"</span><span data-if="python" style="display:none">"GS1 DataBar Limited"</span></i>, <i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Expanded'</span><span data-if="c" style="display:none">"GS1 DataBar Expanded"</span><span data-if="cpp" style="display:none">"GS1 DataBar Expanded"</span><span data-if="com" style="display:none">"GS1 DataBar Expanded"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Expanded"</span><span data-if="python" style="display:none">"GS1 DataBar Expanded"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'GS1 DataBar Expanded Stacked'</span><span data-if="c" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="cpp" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="com" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="python" style="display:none">"GS1 DataBar Expanded Stacked"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'GS1-128'</span><span data-if="c" style="display:none">"GS1-128"</span><span data-if="cpp" style="display:none">"GS1-128"</span><span data-if="com" style="display:none">"GS1-128"</span><span data-if="dotnet" style="display:none">"GS1-128"</span><span data-if="python" style="display:none">"GS1-128"</span></i>, <i><span data-if="hdevelop" style="display:inline">'Code 128'</span><span data-if="c" style="display:none">"Code 128"</span><span data-if="cpp" style="display:none">"Code 128"</span><span data-if="com" style="display:none">"Code 128"</span><span data-if="dotnet" style="display:none">"Code 128"</span><span data-if="python" style="display:none">"Code 128"</span></i>, <i><span data-if="hdevelop" style="display:inline">'EAN-13 Add-On 5'</span><span data-if="c" style="display:none">"EAN-13 Add-On 5"</span><span data-if="cpp" style="display:none">"EAN-13 Add-On 5"</span><span data-if="com" style="display:none">"EAN-13 Add-On 5"</span><span data-if="dotnet" style="display:none">"EAN-13 Add-On 5"</span><span data-if="python" style="display:none">"EAN-13 Add-On 5"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'EAN-13 Add-On 2'</span><span data-if="c" style="display:none">"EAN-13 Add-On 2"</span><span data-if="cpp" style="display:none">"EAN-13 Add-On 2"</span><span data-if="com" style="display:none">"EAN-13 Add-On 2"</span><span data-if="dotnet" style="display:none">"EAN-13 Add-On 2"</span><span data-if="python" style="display:none">"EAN-13 Add-On 2"</span></i>, <i><span data-if="hdevelop" style="display:inline">'EAN-13'</span><span data-if="c" style="display:none">"EAN-13"</span><span data-if="cpp" style="display:none">"EAN-13"</span><span data-if="com" style="display:none">"EAN-13"</span><span data-if="dotnet" style="display:none">"EAN-13"</span><span data-if="python" style="display:none">"EAN-13"</span></i>, <i><span data-if="hdevelop" style="display:inline">'UPC-A Add-On 5'</span><span data-if="c" style="display:none">"UPC-A Add-On 5"</span><span data-if="cpp" style="display:none">"UPC-A Add-On 5"</span><span data-if="com" style="display:none">"UPC-A Add-On 5"</span><span data-if="dotnet" style="display:none">"UPC-A Add-On 5"</span><span data-if="python" style="display:none">"UPC-A Add-On 5"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'UPC-A Add-On 2'</span><span data-if="c" style="display:none">"UPC-A Add-On 2"</span><span data-if="cpp" style="display:none">"UPC-A Add-On 2"</span><span data-if="com" style="display:none">"UPC-A Add-On 2"</span><span data-if="dotnet" style="display:none">"UPC-A Add-On 2"</span><span data-if="python" style="display:none">"UPC-A Add-On 2"</span></i>, <i><span data-if="hdevelop" style="display:inline">'UPC-A'</span><span data-if="c" style="display:none">"UPC-A"</span><span data-if="cpp" style="display:none">"UPC-A"</span><span data-if="com" style="display:none">"UPC-A"</span><span data-if="dotnet" style="display:none">"UPC-A"</span><span data-if="python" style="display:none">"UPC-A"</span></i>, <i><span data-if="hdevelop" style="display:inline">'EAN-8 Add-On 5'</span><span data-if="c" style="display:none">"EAN-8 Add-On 5"</span><span data-if="cpp" style="display:none">"EAN-8 Add-On 5"</span><span data-if="com" style="display:none">"EAN-8 Add-On 5"</span><span data-if="dotnet" style="display:none">"EAN-8 Add-On 5"</span><span data-if="python" style="display:none">"EAN-8 Add-On 5"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'EAN-8 Add-On 2'</span><span data-if="c" style="display:none">"EAN-8 Add-On 2"</span><span data-if="cpp" style="display:none">"EAN-8 Add-On 2"</span><span data-if="com" style="display:none">"EAN-8 Add-On 2"</span><span data-if="dotnet" style="display:none">"EAN-8 Add-On 2"</span><span data-if="python" style="display:none">"EAN-8 Add-On 2"</span></i>, <i><span data-if="hdevelop" style="display:inline">'EAN-8'</span><span data-if="c" style="display:none">"EAN-8"</span><span data-if="cpp" style="display:none">"EAN-8"</span><span data-if="com" style="display:none">"EAN-8"</span><span data-if="dotnet" style="display:none">"EAN-8"</span><span data-if="python" style="display:none">"EAN-8"</span></i>, <i><span data-if="hdevelop" style="display:inline">'UPC-E Add-On 5'</span><span data-if="c" style="display:none">"UPC-E Add-On 5"</span><span data-if="cpp" style="display:none">"UPC-E Add-On 5"</span><span data-if="com" style="display:none">"UPC-E Add-On 5"</span><span data-if="dotnet" style="display:none">"UPC-E Add-On 5"</span><span data-if="python" style="display:none">"UPC-E Add-On 5"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'UPC-E Add-On 2'</span><span data-if="c" style="display:none">"UPC-E Add-On 2"</span><span data-if="cpp" style="display:none">"UPC-E Add-On 2"</span><span data-if="com" style="display:none">"UPC-E Add-On 2"</span><span data-if="dotnet" style="display:none">"UPC-E Add-On 2"</span><span data-if="python" style="display:none">"UPC-E Add-On 2"</span></i>, <i><span data-if="hdevelop" style="display:inline">'UPC-E'</span><span data-if="c" style="display:none">"UPC-E"</span><span data-if="cpp" style="display:none">"UPC-E"</span><span data-if="com" style="display:none">"UPC-E"</span><span data-if="dotnet" style="display:none">"UPC-E"</span><span data-if="python" style="display:none">"UPC-E"</span></i>, <i><span data-if="hdevelop" style="display:inline">'Code 93'</span><span data-if="c" style="display:none">"Code 93"</span><span data-if="cpp" style="display:none">"Code 93"</span><span data-if="com" style="display:none">"Code 93"</span><span data-if="dotnet" style="display:none">"Code 93"</span><span data-if="python" style="display:none">"Code 93"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'Code 39'</span><span data-if="c" style="display:none">"Code 39"</span><span data-if="cpp" style="display:none">"Code 39"</span><span data-if="com" style="display:none">"Code 39"</span><span data-if="dotnet" style="display:none">"Code 39"</span><span data-if="python" style="display:none">"Code 39"</span></i>, <i><span data-if="hdevelop" style="display:inline">'Codabar'</span><span data-if="c" style="display:none">"Codabar"</span><span data-if="cpp" style="display:none">"Codabar"</span><span data-if="com" style="display:none">"Codabar"</span><span data-if="dotnet" style="display:none">"Codabar"</span><span data-if="python" style="display:none">"Codabar"</span></i>, <i><span data-if="hdevelop" style="display:inline">'2/5 Interleaved'</span><span data-if="c" style="display:none">"2/5 Interleaved"</span><span data-if="cpp" style="display:none">"2/5 Interleaved"</span><span data-if="com" style="display:none">"2/5 Interleaved"</span><span data-if="dotnet" style="display:none">"2/5 Interleaved"</span><span data-if="python" style="display:none">"2/5 Interleaved"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'2/5 Industrial'</span><span data-if="c" style="display:none">"2/5 Industrial"</span><span data-if="cpp" style="display:none">"2/5 Industrial"</span><span data-if="com" style="display:none">"2/5 Industrial"</span><span data-if="dotnet" style="display:none">"2/5 Industrial"</span><span data-if="python" style="display:none">"2/5 Industrial"</span></i>
</p>
<p>Therefore you should exclude at least all definitely not occurring
bar code types that are scanned before the first of the bar code types you
expect to find or, better, just scan for the explicit list of bar code types
you expect.
</p>
<p>Especially for the autodiscrimination there is 该算子
<a href="set_bar_code_param_specific.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param_specific</span><span data-if="c" style="display:none">set_bar_code_param_specific</span><span data-if="cpp" style="display:none">SetBarCodeParamSpecific</span><span data-if="com" style="display:none">SetBarCodeParamSpecific</span><span data-if="dotnet" style="display:none">SetBarCodeParamSpecific</span><span data-if="python" style="display:none">set_bar_code_param_specific</span></code></a>. With it some parameters of the bar code
model can be set specifically for certain bar code types.
</p>
<p><b>Training</b>
</p>
<p>If the bar code reader is in training mode, 该算子
<code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> executes a training cycle. The training mode
is described with 该算子 <a href="set_bar_code_param.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></code></a>.
</p>
<p><b>Timeout and Abort</b>
</p>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> can be aborted by a timeout and
dynamically. With 该算子 <a href="set_bar_code_param.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></code></a> you can specify a
timeout. If <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> reaches this timeout, it returns all codes
decoded so far. Alternatively, you can call <a href="set_bar_code_param.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></code></a> with
<i><span data-if="hdevelop" style="display:inline">'abort'</span><span data-if="c" style="display:none">"abort"</span><span data-if="cpp" style="display:none">"abort"</span><span data-if="com" style="display:none">"abort"</span><span data-if="dotnet" style="display:none">"abort"</span><span data-if="python" style="display:none">"abort"</span></i> from another thread to abort <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code>
dynamically.</p>
<p>
The information whether 该算子 was aborted or not can be queried by
calling <a href="get_bar_code_result.html"><code><span data-if="hdevelop" style="display:inline">get_bar_code_result</span><span data-if="c" style="display:none">get_bar_code_result</span><span data-if="cpp" style="display:none">GetBarCodeResult</span><span data-if="com" style="display:none">GetBarCodeResult</span><span data-if="dotnet" style="display:none">GetBarCodeResult</span><span data-if="python" style="display:none">get_bar_code_result</span></code></a> with the parameter <i><span data-if="hdevelop" style="display:inline">'aborted'</span><span data-if="c" style="display:none">"aborted"</span><span data-if="cpp" style="display:none">"aborted"</span><span data-if="com" style="display:none">"aborted"</span><span data-if="dotnet" style="display:none">"aborted"</span><span data-if="python" style="display:none">"aborted"</span></i>.</p>
<p>
Furthermore, 该算子 <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> can be canceled, which
means no result is returned but instead an error is returned. This can be done
with 该算子 <a href="set_operator_timeout.html"><code><span data-if="hdevelop" style="display:inline">set_operator_timeout</span><span data-if="c" style="display:none">set_operator_timeout</span><span data-if="cpp" style="display:none">SetOperatorTimeout</span><span data-if="com" style="display:none">SetOperatorTimeout</span><span data-if="dotnet" style="display:none">SetOperatorTimeout</span><span data-if="python" style="display:none">set_operator_timeout</span></code></a> or <a href="interrupt_operator.html"><code><span data-if="hdevelop" style="display:inline">interrupt_operator</span><span data-if="c" style="display:none">interrupt_operator</span><span data-if="cpp" style="display:none">InterruptOperator</span><span data-if="com" style="display:none">InterruptOperator</span><span data-if="dotnet" style="display:none">InterruptOperator</span><span data-if="python" style="display:none">interrupt_operator</span></code></a>.
If <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> is canceled by <a href="set_operator_timeout.html"><code><span data-if="hdevelop" style="display:inline">set_operator_timeout</span><span data-if="c" style="display:none">set_operator_timeout</span><span data-if="cpp" style="display:none">SetOperatorTimeout</span><span data-if="com" style="display:none">SetOperatorTimeout</span><span data-if="dotnet" style="display:none">SetOperatorTimeout</span><span data-if="python" style="display:none">set_operator_timeout</span></code></a>,
H_ERR_TIMEOUT (9400) is returned. If <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> is
canceled by <a href="interrupt_operator.html"><code><span data-if="hdevelop" style="display:inline">interrupt_operator</span><span data-if="c" style="display:none">interrupt_operator</span><span data-if="cpp" style="display:none">InterruptOperator</span><span data-if="com" style="display:none">InterruptOperator</span><span data-if="dotnet" style="display:none">InterruptOperator</span><span data-if="python" style="display:none">interrupt_operator</span></code></a>, H_ERR_CANCEL (22) is returned.
Note: Both mentioned operators are only supported in cancel mode.
</p>
<p><b>Advice on low resolution bar code imaging systems</b>
</p>
<p>This advice applies to bar code applications that use low resolution images,
i.e., images in which a single bar is between 0.6 and 2 pixels wide.
</p>
<p>In these cases, one should optimize the bar code imaging system in order to
eliminate noise and focal blur because a combination of these optical
distortions lead to problems in the decodability of low resolution bar codes.
</p>
<p>See <a href="set_bar_code_param.html"><code><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></code></a> documentation entry on
<i><span data-if="hdevelop" style="display:inline">'small_elements_robustness'</span><span data-if="c" style="display:none">"small_elements_robustness"</span><span data-if="cpp" style="display:none">"small_elements_robustness"</span><span data-if="com" style="display:none">"small_elements_robustness"</span><span data-if="dotnet" style="display:none">"small_elements_robustness"</span><span data-if="python" style="display:none">"small_elements_robustness"</span></i> for more advice.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<p>This operator supports canceling timeouts and interrupts.</p>
<p>This operator modifies the state of the following input parameter:</p>
<ul><li><a href="#BarCodeHandle"><span data-if="hdevelop" style="display:inline">BarCodeHandle</span><span data-if="c" style="display:none">BarCodeHandle</span><span data-if="cpp" style="display:none">BarCodeHandle</span><span data-if="com" style="display:none">BarCodeHandle</span><span data-if="dotnet" style="display:none">barCodeHandle</span><span data-if="python" style="display:none">bar_code_handle</span></a></li></ul>
<p>During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>singlechannelimage <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte)</span>
</div>
<p class="pardesc">Input image. If the image has a reduced domain, the
bar code search is reduced to that domain.
This usually reduces the runtime of 该算子.
However, if the bar code is not fully inside the domain,
the bar code cannot be decoded correctly.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="SymbolRegions" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SymbolRegions</span><span data-if="c" style="display:none">SymbolRegions</span><span data-if="cpp" style="display:none">SymbolRegions</span><span data-if="com" style="display:none">SymbolRegions</span><span data-if="dotnet" style="display:none">symbolRegions</span><span data-if="python" style="display:none">symbol_regions</span></code></b> (output_object)  </span><span>region(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HRegion.html">HRegion</a></span><span data-if="c" style="display:none">Hobject *</span></span>
</div>
<p class="pardesc">Regions of the successfully decoded bar code symbols.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="BarCodeHandle" class="parname"><b><code><span data-if="hdevelop" style="display:inline">BarCodeHandle</span><span data-if="c" style="display:none">BarCodeHandle</span><span data-if="cpp" style="display:none">BarCodeHandle</span><span data-if="com" style="display:none">BarCodeHandle</span><span data-if="dotnet" style="display:none">barCodeHandle</span><span data-if="python" style="display:none">bar_code_handle</span></code></b> (input_control, state is modified)  </span><span>barcode <code>→</code> <span data-if="dotnet" style="display:none"><a href="HBarCode.html">HBarCode</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the bar code model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CodeType" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CodeType</span><span data-if="c" style="display:none">CodeType</span><span data-if="cpp" style="display:none">CodeType</span><span data-if="com" style="display:none">CodeType</span><span data-if="dotnet" style="display:none">codeType</span><span data-if="python" style="display:none">code_type</span></code></b> (input_control)  </span><span>string(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Type of the searched bar code.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'auto'</span>
    <span data-if="c" style="display:none">"auto"</span>
    <span data-if="cpp" style="display:none">"auto"</span>
    <span data-if="com" style="display:none">"auto"</span>
    <span data-if="dotnet" style="display:none">"auto"</span>
    <span data-if="python" style="display:none">"auto"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'2/5 Industrial'</span><span data-if="c" style="display:none">"2/5 Industrial"</span><span data-if="cpp" style="display:none">"2/5 Industrial"</span><span data-if="com" style="display:none">"2/5 Industrial"</span><span data-if="dotnet" style="display:none">"2/5 Industrial"</span><span data-if="python" style="display:none">"2/5 Industrial"</span>, <span data-if="hdevelop" style="display:inline">'2/5 Interleaved'</span><span data-if="c" style="display:none">"2/5 Interleaved"</span><span data-if="cpp" style="display:none">"2/5 Interleaved"</span><span data-if="com" style="display:none">"2/5 Interleaved"</span><span data-if="dotnet" style="display:none">"2/5 Interleaved"</span><span data-if="python" style="display:none">"2/5 Interleaved"</span>, <span data-if="hdevelop" style="display:inline">'Codabar'</span><span data-if="c" style="display:none">"Codabar"</span><span data-if="cpp" style="display:none">"Codabar"</span><span data-if="com" style="display:none">"Codabar"</span><span data-if="dotnet" style="display:none">"Codabar"</span><span data-if="python" style="display:none">"Codabar"</span>, <span data-if="hdevelop" style="display:inline">'Code 128'</span><span data-if="c" style="display:none">"Code 128"</span><span data-if="cpp" style="display:none">"Code 128"</span><span data-if="com" style="display:none">"Code 128"</span><span data-if="dotnet" style="display:none">"Code 128"</span><span data-if="python" style="display:none">"Code 128"</span>, <span data-if="hdevelop" style="display:inline">'Code 39'</span><span data-if="c" style="display:none">"Code 39"</span><span data-if="cpp" style="display:none">"Code 39"</span><span data-if="com" style="display:none">"Code 39"</span><span data-if="dotnet" style="display:none">"Code 39"</span><span data-if="python" style="display:none">"Code 39"</span>, <span data-if="hdevelop" style="display:inline">'Code 93'</span><span data-if="c" style="display:none">"Code 93"</span><span data-if="cpp" style="display:none">"Code 93"</span><span data-if="com" style="display:none">"Code 93"</span><span data-if="dotnet" style="display:none">"Code 93"</span><span data-if="python" style="display:none">"Code 93"</span>, <span data-if="hdevelop" style="display:inline">'EAN-13 Add-On 2'</span><span data-if="c" style="display:none">"EAN-13 Add-On 2"</span><span data-if="cpp" style="display:none">"EAN-13 Add-On 2"</span><span data-if="com" style="display:none">"EAN-13 Add-On 2"</span><span data-if="dotnet" style="display:none">"EAN-13 Add-On 2"</span><span data-if="python" style="display:none">"EAN-13 Add-On 2"</span>, <span data-if="hdevelop" style="display:inline">'EAN-13 Add-On 5'</span><span data-if="c" style="display:none">"EAN-13 Add-On 5"</span><span data-if="cpp" style="display:none">"EAN-13 Add-On 5"</span><span data-if="com" style="display:none">"EAN-13 Add-On 5"</span><span data-if="dotnet" style="display:none">"EAN-13 Add-On 5"</span><span data-if="python" style="display:none">"EAN-13 Add-On 5"</span>, <span data-if="hdevelop" style="display:inline">'EAN-13'</span><span data-if="c" style="display:none">"EAN-13"</span><span data-if="cpp" style="display:none">"EAN-13"</span><span data-if="com" style="display:none">"EAN-13"</span><span data-if="dotnet" style="display:none">"EAN-13"</span><span data-if="python" style="display:none">"EAN-13"</span>, <span data-if="hdevelop" style="display:inline">'EAN-8 Add-On 2'</span><span data-if="c" style="display:none">"EAN-8 Add-On 2"</span><span data-if="cpp" style="display:none">"EAN-8 Add-On 2"</span><span data-if="com" style="display:none">"EAN-8 Add-On 2"</span><span data-if="dotnet" style="display:none">"EAN-8 Add-On 2"</span><span data-if="python" style="display:none">"EAN-8 Add-On 2"</span>, <span data-if="hdevelop" style="display:inline">'EAN-8 Add-On 5'</span><span data-if="c" style="display:none">"EAN-8 Add-On 5"</span><span data-if="cpp" style="display:none">"EAN-8 Add-On 5"</span><span data-if="com" style="display:none">"EAN-8 Add-On 5"</span><span data-if="dotnet" style="display:none">"EAN-8 Add-On 5"</span><span data-if="python" style="display:none">"EAN-8 Add-On 5"</span>, <span data-if="hdevelop" style="display:inline">'EAN-8'</span><span data-if="c" style="display:none">"EAN-8"</span><span data-if="cpp" style="display:none">"EAN-8"</span><span data-if="com" style="display:none">"EAN-8"</span><span data-if="dotnet" style="display:none">"EAN-8"</span><span data-if="python" style="display:none">"EAN-8"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Expanded Stacked'</span><span data-if="c" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="cpp" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="com" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Expanded Stacked"</span><span data-if="python" style="display:none">"GS1 DataBar Expanded Stacked"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Expanded'</span><span data-if="c" style="display:none">"GS1 DataBar Expanded"</span><span data-if="cpp" style="display:none">"GS1 DataBar Expanded"</span><span data-if="com" style="display:none">"GS1 DataBar Expanded"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Expanded"</span><span data-if="python" style="display:none">"GS1 DataBar Expanded"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Limited'</span><span data-if="c" style="display:none">"GS1 DataBar Limited"</span><span data-if="cpp" style="display:none">"GS1 DataBar Limited"</span><span data-if="com" style="display:none">"GS1 DataBar Limited"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Limited"</span><span data-if="python" style="display:none">"GS1 DataBar Limited"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Omnidir'</span><span data-if="c" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="cpp" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="com" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Omnidir"</span><span data-if="python" style="display:none">"GS1 DataBar Omnidir"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Stacked Omnidir'</span><span data-if="c" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="cpp" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="com" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Stacked Omnidir"</span><span data-if="python" style="display:none">"GS1 DataBar Stacked Omnidir"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Stacked'</span><span data-if="c" style="display:none">"GS1 DataBar Stacked"</span><span data-if="cpp" style="display:none">"GS1 DataBar Stacked"</span><span data-if="com" style="display:none">"GS1 DataBar Stacked"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Stacked"</span><span data-if="python" style="display:none">"GS1 DataBar Stacked"</span>, <span data-if="hdevelop" style="display:inline">'GS1 DataBar Truncated'</span><span data-if="c" style="display:none">"GS1 DataBar Truncated"</span><span data-if="cpp" style="display:none">"GS1 DataBar Truncated"</span><span data-if="com" style="display:none">"GS1 DataBar Truncated"</span><span data-if="dotnet" style="display:none">"GS1 DataBar Truncated"</span><span data-if="python" style="display:none">"GS1 DataBar Truncated"</span>, <span data-if="hdevelop" style="display:inline">'GS1-128'</span><span data-if="c" style="display:none">"GS1-128"</span><span data-if="cpp" style="display:none">"GS1-128"</span><span data-if="com" style="display:none">"GS1-128"</span><span data-if="dotnet" style="display:none">"GS1-128"</span><span data-if="python" style="display:none">"GS1-128"</span>, <span data-if="hdevelop" style="display:inline">'MSI'</span><span data-if="c" style="display:none">"MSI"</span><span data-if="cpp" style="display:none">"MSI"</span><span data-if="com" style="display:none">"MSI"</span><span data-if="dotnet" style="display:none">"MSI"</span><span data-if="python" style="display:none">"MSI"</span>, <span data-if="hdevelop" style="display:inline">'PharmaCode'</span><span data-if="c" style="display:none">"PharmaCode"</span><span data-if="cpp" style="display:none">"PharmaCode"</span><span data-if="com" style="display:none">"PharmaCode"</span><span data-if="dotnet" style="display:none">"PharmaCode"</span><span data-if="python" style="display:none">"PharmaCode"</span>, <span data-if="hdevelop" style="display:inline">'UPC-A Add-On 2'</span><span data-if="c" style="display:none">"UPC-A Add-On 2"</span><span data-if="cpp" style="display:none">"UPC-A Add-On 2"</span><span data-if="com" style="display:none">"UPC-A Add-On 2"</span><span data-if="dotnet" style="display:none">"UPC-A Add-On 2"</span><span data-if="python" style="display:none">"UPC-A Add-On 2"</span>, <span data-if="hdevelop" style="display:inline">'UPC-A Add-On 5'</span><span data-if="c" style="display:none">"UPC-A Add-On 5"</span><span data-if="cpp" style="display:none">"UPC-A Add-On 5"</span><span data-if="com" style="display:none">"UPC-A Add-On 5"</span><span data-if="dotnet" style="display:none">"UPC-A Add-On 5"</span><span data-if="python" style="display:none">"UPC-A Add-On 5"</span>, <span data-if="hdevelop" style="display:inline">'UPC-A'</span><span data-if="c" style="display:none">"UPC-A"</span><span data-if="cpp" style="display:none">"UPC-A"</span><span data-if="com" style="display:none">"UPC-A"</span><span data-if="dotnet" style="display:none">"UPC-A"</span><span data-if="python" style="display:none">"UPC-A"</span>, <span data-if="hdevelop" style="display:inline">'UPC-E Add-On 2'</span><span data-if="c" style="display:none">"UPC-E Add-On 2"</span><span data-if="cpp" style="display:none">"UPC-E Add-On 2"</span><span data-if="com" style="display:none">"UPC-E Add-On 2"</span><span data-if="dotnet" style="display:none">"UPC-E Add-On 2"</span><span data-if="python" style="display:none">"UPC-E Add-On 2"</span>, <span data-if="hdevelop" style="display:inline">'UPC-E Add-On 5'</span><span data-if="c" style="display:none">"UPC-E Add-On 5"</span><span data-if="cpp" style="display:none">"UPC-E Add-On 5"</span><span data-if="com" style="display:none">"UPC-E Add-On 5"</span><span data-if="dotnet" style="display:none">"UPC-E Add-On 5"</span><span data-if="python" style="display:none">"UPC-E Add-On 5"</span>, <span data-if="hdevelop" style="display:inline">'UPC-E'</span><span data-if="c" style="display:none">"UPC-E"</span><span data-if="cpp" style="display:none">"UPC-E"</span><span data-if="com" style="display:none">"UPC-E"</span><span data-if="dotnet" style="display:none">"UPC-E"</span><span data-if="python" style="display:none">"UPC-E"</span>, <span data-if="hdevelop" style="display:inline">'auto'</span><span data-if="c" style="display:none">"auto"</span><span data-if="cpp" style="display:none">"auto"</span><span data-if="com" style="display:none">"auto"</span><span data-if="dotnet" style="display:none">"auto"</span><span data-if="python" style="display:none">"auto"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="DecodedDataStrings" class="parname"><b><code><span data-if="hdevelop" style="display:inline">DecodedDataStrings</span><span data-if="c" style="display:none">DecodedDataStrings</span><span data-if="cpp" style="display:none">DecodedDataStrings</span><span data-if="com" style="display:none">DecodedDataStrings</span><span data-if="dotnet" style="display:none">decodedDataStrings</span><span data-if="python" style="display:none">decoded_data_strings</span></code></b> (output_control)  </span><span>string(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Data strings of all successfully decoded bar codes.</p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Small example for aborting bar code search:
read_image (Image, 'barcode/ean13/tea_box_10.png')

* Decode normally:
create_bar_code_model ([], [], BarCodeHandle)
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'auto', \
    DecodedDataStrings)
stop ()

* Start bar code search in separate thread.
par_start&lt;ThreadID&gt;: find_bar_code (Image, SymbolRegions1, BarCodeHandle, \
    'auto', DecodedDataStrings1)

* Let some time pass.
wait_seconds (0.002)

* Abort the data code search.
set_bar_code_param (BarCodeHandle, 'abort', 'true')

* Wait for the thread, it should finish very fast.
par_join(ThreadID)

* We can determine that the search in fact was aborted.
get_bar_code_result (BarCodeHandle, 'all', 'aborted', Aborted)
</pre>
<h2 id="sec_result">结果</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">find_bar_code</span><span data-if="c" style="display:none">find_bar_code</span><span data-if="cpp" style="display:none">FindBarCode</span><span data-if="com" style="display:none">FindBarCode</span><span data-if="dotnet" style="display:none">FindBarCode</span><span data-if="python" style="display:none">find_bar_code</span></code> 返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    
if the given parameters are correct.
Otherwise, an exception will be raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="create_bar_code_model.html"><span data-if="hdevelop" style="display:inline">create_bar_code_model</span><span data-if="c" style="display:none">create_bar_code_model</span><span data-if="cpp" style="display:none">CreateBarCodeModel</span><span data-if="com" style="display:none">CreateBarCodeModel</span><span data-if="dotnet" style="display:none">CreateBarCodeModel</span><span data-if="python" style="display:none">create_bar_code_model</span></a></code>, 
<code><a href="set_bar_code_param.html"><span data-if="hdevelop" style="display:inline">set_bar_code_param</span><span data-if="c" style="display:none">set_bar_code_param</span><span data-if="cpp" style="display:none">SetBarCodeParam</span><span data-if="com" style="display:none">SetBarCodeParam</span><span data-if="dotnet" style="display:none">SetBarCodeParam</span><span data-if="python" style="display:none">set_bar_code_param</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="get_bar_code_result.html"><span data-if="hdevelop" style="display:inline">get_bar_code_result</span><span data-if="c" style="display:none">get_bar_code_result</span><span data-if="cpp" style="display:none">GetBarCodeResult</span><span data-if="com" style="display:none">GetBarCodeResult</span><span data-if="dotnet" style="display:none">GetBarCodeResult</span><span data-if="python" style="display:none">get_bar_code_result</span></a></code>, 
<code><a href="get_bar_code_object.html"><span data-if="hdevelop" style="display:inline">get_bar_code_object</span><span data-if="c" style="display:none">get_bar_code_object</span><span data-if="cpp" style="display:none">GetBarCodeObject</span><span data-if="com" style="display:none">GetBarCodeObject</span><span data-if="dotnet" style="display:none">GetBarCodeObject</span><span data-if="python" style="display:none">get_bar_code_object</span></a></code>, 
<code><a href="clear_bar_code_model.html"><span data-if="hdevelop" style="display:inline">clear_bar_code_model</span><span data-if="c" style="display:none">clear_bar_code_model</span><span data-if="cpp" style="display:none">ClearBarCodeModel</span><span data-if="com" style="display:none">ClearBarCodeModel</span><span data-if="dotnet" style="display:none">ClearBarCodeModel</span><span data-if="python" style="display:none">clear_bar_code_model</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="decode_bar_code_rectangle2.html"><span data-if="hdevelop" style="display:inline">decode_bar_code_rectangle2</span><span data-if="c" style="display:none">decode_bar_code_rectangle2</span><span data-if="cpp" style="display:none">DecodeBarCodeRectangle2</span><span data-if="com" style="display:none">DecodeBarCodeRectangle2</span><span data-if="dotnet" style="display:none">DecodeBarCodeRectangle2</span><span data-if="python" style="display:none">decode_bar_code_rectangle2</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Bar Code</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
